package com.lab.dto;

import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDate;
import java.util.List;

/**
 * 日进度DTO（数据传输对象）
 * 用于创建或更新成员日进度时，整合主表信息与内容列表的传输
 * 对应member_daily_progress表与daily_progress_content表的关联数据
 */
@Data
public class DailyProgressDTO {

    /**
     * 成员ID（关联member表主键）
     * 必须存在有效的成员ID，用于关联所属成员
     */
    @NotNull(message = "成员ID不能为空")
    private Integer memberId;

    /**
     * 进度日期
     * 不可为null，标识当前进度对应的日期（需与内容列表中的contentDate保持一致或逻辑关联）
     */
    @NotNull(message = "进度日期不能为空")
    private LocalDate progressDate;

    /**
     * 角色类型（前端/后端/算法等）
     * 需与成员在member表中登记的role_type一致，确保数据一致性
     */
    @NotBlank(message = "角色类型不能为空")
    private String roleType;

    /**
     * 日进度内容列表
     * 至少包含一条进度内容，且每个内容的contentDate应与当前progressDate匹配
     */
    @NotNull(message = "进度内容列表不能为空")
    @Size(min = 1, message = "至少需包含一条进度内容")
    private List<DailyProgressContentDTO> contents;
}